#! /usr/bin/env python
# -*- coding: utf-8 -*-

# Модуль для парсинга файла с элементами залегания плоскости трещин.
# Возвращает кортеж переменных:
# dir, dip, line, tr, look, lookdig, color, comments
# если какой то параметер не был найден в исходной строке, то в место него 
# возвращается None

import re

def parse_line(line):
    pattern = r'^([0-9]{1,3})\s+([0-9]{1,2})(\s+[0-9]{1,3}(TR)?)?(\s+([a-z])([0-9]{1,2})?)?(\s+(((1|1.|1.0|0?[.][0-9]),(1|1.|1.0|0?[.][0-9]),(1|1.|1.0|0?[.][0-9]))|(1|1.|1.0|0?[.][0-9])))?\s*(#.*)?$'
    match = re.search(pattern, line)
    if match:
        dir     = float(match.group(1))
        dip     = float(match.group(2))
        line    = match.group(3)
        tr      = match.group(4)
        if tr:
            line= float(line[:-2])
        elif line:
            line= float(line)
        look    = match.group(6)
        lookdig = match.group(7)
        color   = match.group(8)
        comments= match.group(15)[1:]
        return dir, dip, line, tr, look, lookdig, color, comments
    return None,None,None,None,None,None,None,None
